package br.com.hs.nfe.common.enumeration;

/**
 * Enumeração das modalidades de frete da NF-e.
 * @author Ranlive Hrysyk
 */
public enum ModalidadeFreteEnum {

    /**
     * 0 - Emitente
     */
    POR_CONTA_EMITENTE("0", "Por conta do emitente", "0 - Emitente"),
    /**
     * 1- Destinatário/Remetente
     */
    POR_CONTA_DESTINATARIO("1", "Por conta do destinatário/remetente", "1 - Destinatário/Remetente"),
    /**
     * 2 - Terceiros
     */
    POR_CONTA_TERCEIROS("2", "Por conta de terceiros", "2 - Terceiros"),
    /**
     * 9 - Sem Frete
     */
    SEM_FRETE("9", "Sem Frete", "9 - Sem Frete");
    private final String codigo;
    private final String descricao;
    private final String descricaoDANFE;

    private ModalidadeFreteEnum(String codigo, String descricao, String descricaoDanfe) {
        this.codigo = codigo;
        this.descricao = descricao;
        this.descricaoDANFE = descricaoDanfe;
    }

    /**
     * Descrição.
     */
    public String getDescricao() {
        return this.descricao;
    }

    /**
     * Descrição DANFE.
     */
    public String getDescricaoDANFE() {
        return this.descricaoDANFE;
    }

    /**
     * Código.
     */
    public String getCodigo() {
        return this.codigo;
    }

    @Override
    public String toString() {
        return getDescricaoDANFE();
    }

    /**
     * Obtém enum pelo código.
     */
    public static ModalidadeFreteEnum getEnumByCodigo(String string) {
        for (ModalidadeFreteEnum e : values()) {
            if (e.getCodigo().equals(string)) {
                return e;
            }
        }
        return null;
    }
}
